package net.suplementos.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;

import net.suplementos.exception.DAOException;
import net.suplementos.pojo.Promocao;

public class PromocaoDAO extends JPAAbstractDAO<Promocao, Integer> {

	public PromocaoDAO(EntityManager manager) throws DAOException {
	    super(manager);
	}

	protected Class<Promocao> doGetClass() {
		return Promocao.class;
	}
	
	public Promocao getPorTitulo(String titulo) throws DAOException {
		String consulta = "select p from Promocao p where p.titulo = ?";

		List<Promocao> promocoes = consultar(consulta, titulo);

		if (promocoes == null || promocoes.isEmpty()) {
			return null;
		}

		return promocoes.get(0);
	}
	
	public List<Promocao> consultar(String titulo, Date dataInicio, Date dataFim) throws DAOException {
       	StringBuilder hql = new StringBuilder("select p from Promocao p where 1 = 1 ");
       	List<Object> parametros = new ArrayList<Object>();

       	if (titulo != null && !titulo.trim().equals("")) {
       		hql.append("and p.titulo like ?");
       		parametros.add("%" + titulo + "%");
       	}
       	if (dataInicio != null && dataFim != null) {
       		hql.append("and p.dataInicio beetwin ? and ? ");
       		parametros.add(dataInicio);
       		parametros.add(dataFim);
       		hql.append("and p.dataFim beetwin ? and ? ");
       		parametros.add(dataInicio);
       		parametros.add(dataFim);
    	}

    	return consultar(hql.toString(), parametros.toArray(new Object[parametros.size()]));
	}
}
